<HTML><HEAD>

<TITLE>Release Notes for LDPC-codes Software</TITLE>

</HEAD><BODY>


<H1>Release Notes for LDPC-codes Software</H1>

These notes describe all the stable public releases of this software.  Old
and future releases can be obtained via
<BLOCKQUOTE>
<A HREF="http://www.cs.toronto.edu/~radford/ldpc.software.html">
<TT>http://www.cs.toronto.edu/~radford/ldpc.software.html</TT></A>
</BLOCKQUOTE>
The current development version is now maintained at 
<BLOCKQUOTE>
<A HREF="http://github.com/radfordneal/LDPC-codes">
<TT>http://github.com/radfordneal/LDPC-code</TT></A>
</BLOCKQUOTE>

<H2>Version of 2012-02-11.</H2>
This version has a few bug fixes and some minor new features. The major
change is that a source repository for the software is now hosted
at github.com, making it easier for people to create and release
their own versions of this software.
<OL>
<LI> Changed the copyright notice (in the file COPYRIGHT, and elsewhere)
     to remove the requirement that my web site be referenced.  (Nowadays,
     I think users should have no problem finding the sources using a 
     search engine.)
<LI> Included a copy of the nrand48 routine from the GNU C library
     in the rand.c module, to ensure that it is always available
     and always the same.  (This isn't so on some versions of cygwin.)
<LI> Added a -f option to encode and decode that forces flushing
     after writing each block.  Useful for allowing encode or
     decode to be used as a server, reading and writing blocks
     from named pipes.
<LI> Added a -z option for pchk-to-alist to suppress output of 0
     row and column indexes that pad up to the maximum number used.
<LI> Documented the previously undocumented -t options for pchk-to-alist
     and alist-to-pchk.
<LI> Changed alist-to-pchk so that it no longer requires zero indexes
     that pad out to the maximum needed for a row or column (thanks
     to Monica Kolb for suggesting this).
<LI> Changed mod2word type in mod2dense.c to uint32_t, to avoid
     wasted space when long is 64 bits (thanks to Mathieu Cunche 
     and Vincent Roca for suggesting this).
<LI> Fixed bug in distrib.c affecting distributions with a single 
     number (thanks to Mike Vicuna for pointing it out).
<LI> Fixed bug in -t option for pchk-to-alist (thanks to Andrea Fontana
     for reporting this).
<LI> Fixed references in the documentation to mod2sparse_multvec
     that should be to mod2sparse_mulvec (thanks to Andrea Fontana
     for reporting this).
</OL>


<H2>Version of 2006-02-08.</H2>

The copyright notice has been changed in this release to no longer
restrict use to purposes of research or education.  The new copyright
notice can be read <A HREF="index.html#copyright">here</A>.  It is now
possible to create LDPC codes with varying numbers of checks per bit
(an extension based on work by Peter Junteng Liu).  New programs for
converting to and from the <A
HREF="http://www.inference.phy.cam.ac.uk/mackay/codes/alist.html">alist
format</A> for parity check matrices, used by David MacKay and others,
have also been added.

<P>The following new features have been added:
<OL>
<LI> The <A HREF="pchk.html#make-ldpc"><TT>make-ldpc</TT></A> program can
     new create LDPC codes with varying numbers of checks per bit.  The
     <A HREF="examples.html">examples</A> now include a code of this sort.
<LI> New programs <A HREF="pchk.html#pchk-to-alist"><TT>pchk-to-alist</TT></A> 
     and <A HREF="pchk.html#alist-to-pchk"><TT>alist-to-pchk</TT></A> have
     been added, which convert to and from <A
     HREF="http://www.inference.phy.cam.ac.uk/mackay/codes/alist.html">alist
     format</A>.
<LI> A <A HREF="run-examples"><TT>run-examples</TT></A> script has been 
     added, which runs all the <A HREF="examples.html">examples</A> and 
     compares with the saved output that I obtained.
</OL>


<H2>Version of 2001-11-18.</H2>

This is a minor release, whose main purpose is fixing bug (1) below.
Also, this release has been tested and found to work with the <A
HREF="http://www.cygwin.com">cygwin</A> Unix environment that runs
under Microsoft Windows.

<P>The following new feature has been added:
<OL>
<LI> A new <B>-t</B> option has been added to 
     <A HREF="pchk.html#print-pchk"><TT>print-pchk</TT></A>, which 
     causes it to print the transpose of the parity check matrix.
</OL>

The following program module change was made:
<OL>

<LI> The behaviour of <A
     HREF="mod2dense.html#invert_selected">mod2dense_invert_selected</A>
     has been changed when the matrix has dependent rows.  The result returned 
     contains the inverse of a sub-matrix in its initial columns.  The contents
     of the remaining columns up to the number of rows was previously undefined,
     but these columns are now set to contain zeros.  This was done to fix
     bug (1) below.
</OL>

The following bugs were fixed:
<OL>
<LI> A bug has been fixed in 
     <A HREF="encoding.html#make-gen"><TT>make-gen</TT></A>
     which sometimes 
     produced invalid `dense' or `mixed' generator matrices when the parity 
     check matrix had redundant rows.
     The `sparse' generator matrices were not affected.  The output of the 
     <A HREF="ex-dep"><TT>ex-dep</TT></A> example has changed slightly as a 
     result.
<LI> The open mode for reading the file of random numbers has been changed from
     "r" to "rb", for compatibility with non-Unix systems.
<LI> <A HREF="mod2sparse.html#copy"><TT>mod2sparse_copy</TT></A> has
     been fixed so that it copies the <B>lr</B> and <B>pr</B> fields
     of entries.
<LI> The "set -v -e" in the command files for the examples has 
     been replaced by two commands, "set -e" and "set -v", since some 
     shells can't set two options at once.
</OL>

A few minor fixes to the documentation have also been made.


<H2>Version of 2001-05-04.</H2>

Changes and new features regarding programs and associated
documentation and examples:
<OL>
<LI> Warnings have been added to the documentation about the dangers of
     using zero codewords for testing (due to the possibility of the decoder
     accidently being non-symmetric).  The examples have been changed to
     not use zero codewords, except for 
     <A HREF="ex-ham7a"><TT>ex-ham7a</TT></A>, which still
     demonstrates this facility.
<LI> Decoding by probability propagation has been changed so that if
     a probability ratio gets set to NaN ("not a number", the result of 
     infinite but conflicting evidence from different sources), the probability 
     ratio is changed to 1, in hopes that something sensible may result.
<LI> The decoding procedures have been changed to decode a bit to a 1 if
     there is a tie, so that any resulting asymmetry in decoding will 
     make zero decoding less, rather than more, likely.  See point (1) above.
<LI> All programs now allow a file name argument to be "-", which specifies
     standard input or standard output, as appropriate.  The 
     <A HREF="ex-ldpc36-5000a"><TT>ex-ldpc36-5000a</TT></A> example has been
     changed to use this facility in order to avoid creating lots of files.
<LI> Channels with noise from a logistic distribution (AWLN) have been
     implemented.  For details,
     see the <A HREF="channel.html">channel documentation</A>.
<LI> The <B>make-gen</B> program for "dense" or "mixed" options was modified 
     so that when some parity checks are redundant, others are not declared 
     redundant when they aren't.  This makes the result compatible with
     what is obtained with the "sparse" option.  The example in the 
     <A HREF="dep-H.html">discussion of linear dependence in parity check 
     matrices</A> has changed slightly as a result.
<LI> The messages displayed by the <A HREF="decoding.html#decode">decode</A> 
     program have changed slightly: The block size is no longer displayed,
     and the percentage of bits changed is now shown.  The data output
     when the <B>-t</B> option is specified now includes the number of
     bits changed in each block.  
<LI> A new <B>-T</B> option to <A HREF="decoding.html#decode">decode</A> 
     for displaying
     <A HREF="decode-detail.html">detailed information on decoding</A>
     has been added.
<LI> Doing a <B>make clean</B> will now remove the files created 
     by running the <A HREF="examples.html">examples</A>.
<LI> The files created by the <A HREF="examples.html">examples</A> now
     start with "<TT>ex-</TT>" and contain a ".", to make them easier to 
     identify for cleanup, and the saved output file now ends in 
     "<TT>-out</TT>" rather than "<TT>.out</TT>".
<LI> The scripts for the examples now use the <B>-v</B> option of <B>set</B>
     rather than <B>-x</B>, so that the command lines are echoed 
     faithfully as they are read.
<LI> Two new <A HREF="examples.html">examples</A> have been added:
     <TT>ex-dep</TT> demonstrates what happens when parity check matrices
     have redundant row, and <TT>ex-wrong-model</TT> investigates what
     happens when the wrong model is used to decode.
</OL>
Changes and new features regarding program modules and other internals:
<OL>
<LI> Instructions have been added on 
     <A HREF="modify.html">how to modify the programs</A>, and some
     code has been reorganized to facilitate modifications.
<LI> The makefile has been made trivial, simply recompiling everything
     from scratch every time.  This is simpler and less error prone
     than putting in dependencies.
     Compiling all the programs takes only about five seconds on a 
     modern PC.
<LI> The 
 <A HREF="mod2dense.html#invert_selected"><TT>mod2dense_invert_selected</TT></A>
     procedure has been changed
     to take an additional argument in which a permutation of rows is
     returned.  This extension is needed in order for the result when
     the matrix is not of full rank to include as many rows as possible,
     as needed for the above modification of <B>make-gen</B>.
<LI> New routines 
     <A HREF="mod2dense.html#copyrows"><TT>mod2dense_copyrows</TT></A> and 
     <A HREF="mod2sparse.html#copyrows"><TT>mod2sparse_copyrows</TT></A> have
     been added, analogous to the previous routines for copying columns.
<LI> The decoding procedures have been changed to always return the bit
     probabilities (previously, one could pass a null pointer to suppress
     this).  This makes things simpler, and facilitates the production of
     detailed trace output when the <B>-T</B> option is used.
</OL>

The following bugs were fixed:
<OL>
<LI> A problem with <B>print-gen</B> prevented the <B>-d</B> option from working
     in most cases.  The documentation was also fixed to note what
     the <B>L</B> and <B>U</B> matrices printed will look like.
<LI> The documentation for 
     <A HREF="mod2sparse.html#copycols"><TT>mod2sparse_copycols</TT></A> and
     <A HREF="mod2dense.html#copycols"><TT>mod2dense_copycols</TT></A>
     was ambiguous.  It has been clarified.  The dense and sparse 
     implementations were inconsistent.  The sparse version has been changed
     to match the dense version, which was and is the only version actually
     used in the LDPC software.
<LI> In <TT>decode.c</TT>, a variable declared to be <TT>float</TT> was printed
     using "<TT>%f</TT>", which strangely didn't work with one compiler.  
     It's now declared as <TT>double</TT>.
</OL>

There were also numerous minor cleanups of program code and documentation.

<H2>Version of 2000-03-19.</H2>

This was the first public release.

<HR>

<A HREF="index.html">Back to index for LDPC software</A>

</BODY></HTML>
